package ig.finanzas;


import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

/**
 * The Data Transfer Object class.
 * Created 22/06/2006 04:49:30 PM
 * @author jsanchez
 */
public class BalanceDTO implements java.io.Serializable {

    private java.lang.Integer puc;
    private java.lang.Double valor;
    private java.lang.Long moneda;
    private Long producto;
    private Long unidadDeNegocio;
    private boolean dirty = false; //dirty flag
    private String emisor;
    
    private Integer IDORIGENDATO;
    
    public BalanceDTO(){
    }
    
    public BalanceDTO(java.lang.Integer puc, java.lang.Double valor,java.lang.Long moneda, Long producto,Long unidadDeNegocio,String emisor, Integer IDORIGENDATO){
        this.puc = puc;
        this.valor = valor;
        this.moneda = moneda;       
        this.producto=producto;
        this.unidadDeNegocio=unidadDeNegocio;
        this.emisor=emisor;
        this.IDORIGENDATO=IDORIGENDATO;
    }
    
    private void setDirty(){
        dirty = true;
    }
    
    public boolean isDirty(){
        return dirty;
    }
    
    public void resetDirty(){
        dirty = false;
    }

    public Long getMoneda() { return moneda; }
    public void setMoneda(Long moneda) {
        this.moneda = moneda;
    }    

    public void setProducto(Long producto) {
        this.producto = producto;        setDirty();
    }

    public void setUnidadDeNegocio(Long unidadDeNegocio) {
        this.unidadDeNegocio = unidadDeNegocio;        setDirty();
    }

    public Long getProducto() {
        return producto;
    }

    public Long getUnidadDeNegocio() {
        return unidadDeNegocio;
    }

   
    public java.lang.Integer getPuc(){ return puc; }
    public void setPuc(java.lang.Integer puc){
        this.puc = puc;
        setDirty();
    }
    
    public java.lang.Double getValor(){ return valor; }
    public void setValor(java.lang.Double valor){
        this.valor = valor;
        setDirty();
    }
    
    
//    // populate DTO from Object
//    public void populate(Object o) {
//        Method[] methods = o.getClass().getMethods();
//        for (int i = 0; i < methods.length; i++) {
//            try{
//                String methodName = methods[i].getName();
//                if ((methodName.startsWith("get") ||
//                        methodName.startsWith("is"))
//                        && Modifier.isPublic(methods[i].getModifiers())
//                        && methods[i].getParameterTypes().length == 0
//                        && !methodName.equals("getClass")) {
//                    String setMethodName = methodName.replaceFirst(methodName.startsWith("get")?"get":"is","set");
//                    getClass().getMethod(setMethodName,new Class[]{methods[i].getReturnType()}).
//                            invoke(this, new Object[]{methods[i].invoke(o,null)});
//                }
//            }catch(IllegalAccessException ilE){
//                ilE.printStackTrace();
//            }catch(InvocationTargetException invE){
//                invE.printStackTrace();
//            }catch(NoSuchMethodException noE){
//                // Don't find setMethod for field
//            }
//        }
//    }
    
    
    /**
     * @see java.lang.Object#toString()
     */
    public String toString(){
        return getClass().getName() + "[" +
                "puc: " + this.puc + ", " +
                "moneda: " + this.moneda + ", " +
                "valor: " + this.valor + "]";                
    }
    
    /**
     * @see java.lang.Object#equals(java.lang.Object)
     */
/*    public boolean equals(java.lang.Object otherOb) {
        
        if (this == otherOb) {
            return true;
        }
        if (!(otherOb instanceof BalanceDTO)) {
            return false;
        }
        BalanceDTO other = (BalanceDTO) otherOb;
        return (
                (puc==null?other.puc==null:puc.equals(other.puc))
                &&
                (valor==null?other.valor==null:valor.equals(other.valor))
                &&
                (moneda==null?other.moneda==null:moneda.equals(other.moneda))                
                );
    }
    
    /**
     * @see java.lang.Object#hashCode()
     */
    /*public int hashCode() {
        return (
                (puc==null?0:puc.hashCode())
                ^
                (valor==null?0:valor.hashCode())
                ^
                (moneda==null?0:moneda.hashCode())                
                );
    }*/

    public String getEmisor() {
        return emisor;
    }

    public void setEmisor(String emisor) {
        this.emisor = emisor;
    }

    public Integer getIDORIGENDATO() {
        return IDORIGENDATO;
    }

    public void setIDORIGENDATO(Integer IDORIGENDATO) {
        this.IDORIGENDATO = IDORIGENDATO;
    }

}
